package com.boat.framework.common.domain;

import java.util.Collection;
import java.util.List;
import java.util.Map;

import com.boat.framework.base.api.Page;
import com.boat.framework.base.api.PageParam;
/**
 * 基础数据库持久接口
 * @author 周江
 *
 * @param <E>
 * @param <I>
 */
public interface BaseRepository<E, I> {
	/** 增加，返回记录数 **/
	public int insert(E entity);
	
	/** 批量增加，返回记录数 **/
	public int insertBatch(Collection<E> entitys);

	/** 修改，返回记录数 **/
	public int updateById(E entity);

	/** 删除，返回记录数 **/
	public int deleteById(I id);
	
	/** 批量删除，返回记录数 **/
	public int deleteByIds(Collection<I> ids);

	/** 查询记录总数 **/
	public long count(E entity);
	
	/** 查询记录总数 **/
	public long count(Map<String, Object> map);

	/** 根据条件获取List **/
	public List<E> listByMap(Map<String, Object> map, PageParam pageParam);

	/** 根据条件获取List **/
	public List<E> listByExample(E entity, PageParam pageParam);
	
	/** 查询翻页数据 **/
	public Page<E> page(E entity, PageParam pageParam);
	
	/** 查询翻页数据 **/
	public Page<E> page(Map<String, Object> map, PageParam pageParam);

	/** 根据id获取 **/
	public E getById(I id);
	
	/** 根据条件获取Object **/
	public E getByMap(Map<String, Object> map);

	/** 根据条件获取Object **/
	public E getByExample(E entity);

}